package examples 
{
	import com.greensock.TweenLite;
	import entities.PlatformBoy;
	import flash.display.BitmapData;
	import flash.events.MouseEvent;
	import flash.events.TimerEvent;
	import flash.utils.Timer;
	import org.libspark.betweenas3.BetweenAS3;
	import org.libspark.betweenas3.core.tweens.ObjectTween;
	import org.libspark.betweenas3.tweens.IObjectTween;
	import org.libspark.betweenas3.tweens.ITweenGroup;
	import pure.engine.events.EntityMouseEvent;
	import pure.engine.events.WorldMouseEvent;
	import pure.engine.idea.Psychic;
	import pure.engine.Multiple;
	import pure.engine.model.IAnime;
	import pure.engine.model.IText;
	import pure.engine.Scouter;
	import pure.engine.status.motion.PlatformMotion;
	import pure.engine.Despair;
	import pure.engine.model.Entity;
	import pure.engine.events.WorldContentEvent;
	import pure.engine.model.AnimeRenderer;
	import pure.engine.scenery.SceneryType;
	import pure.engine.scenery.ImageScenery;
	import pure.engine.scenery.TiledScenery;
	import pure.engine.world.TiledWorldContent;
	import pure.utils.DesU;
	import pure.engine.status.motion.PlatformMotion;
	import reactions.PlayerReaction;
	
	/**
	 * ...
	 * @author Pure
	 */
public class PlatformWorldB extends TiledWorldContent 
{
	
	public function PlatformWorldB() 
	{
		super(Config.landform, 32);
	}
	
	
	[Embed(source = 'PlatformMapSheet.png')]private var PlatformMapSheet:Class;
	[Embed(source = 'background.jpg')]private var background:Class;
	
	private var platformMapSheet:BitmapData;
	public static var m_entity:Entity;
	private var m_renderer:AnimeRenderer;
	private var m_text:IText;
	private var m_rendererT:IText;
	
	
	private var m_soul:Psychic = new Psychic();
	
	
	
	override public function enter():void
	{

		platformMapSheet = new PlatformMapSheet().bitmapData;

		this.createImageScenery(new background().bitmapData, SceneryType.H_FLOW);
		this.createTiledScenery(platformMapSheet, renderData, 32);
		
		m_entity = this.createFinalEntity('PlatformBoy', 200, 100);
		m_soul.addEntity(m_entity,'player');
		
		m_renderer = m_entity.headRenderer as AnimeRenderer;
		m_rendererT = m_entity.tailRenderer as IText;
		
		
		//var len:int = 300;
		//for (var i:int = 0; i < len; i++) 
		//{
			//var E:Entity;
			//var R:IAnime;
			//
			//E = this.createSimpleEntity();
			//R = E.createAnimeRenderer('colonist_32_32', 'p');
			//R.play('right_run',null,true)
			//E.move(20 + Math.random() * 920, 20 + Math.random() * 440);
			//m_soul.addEntityToGroup(E, 'bullet');
			//m_bulletList.push(E);
			//
		//}
		
		//this.addEventListener(EntityMouseEvent.MOUSE_DOWN, ____onWorldClick);
	}
	private var m_bulletList:Array = [];
	
	private function ____onWorldClick(e:WorldMouseEvent):void
	{
		if (!e.entityID) return;
		
		trace('名字: '+Scouter.getEntityByID(e.entityID).name+' | id: '+e.entityID);
	}
	
	
	override public function update(elapsedT:Number):void
	{
				
		if (Multiple.input.justPressed('V')) {
			m_renderer.visible = !m_renderer.visible;
		};
		if (!Multiple.input.pressed('LEFT') && !Multiple.input.pressed('RIGHT'))
		{	
			if (Multiple.input.justReleased('LEFT')||Multiple.input.justReleased('RIGHT'))
			{
				m_soul.getCombo().push(PlayerReaction.Stop, { onStart:trace, onStartParams:['stop'] } );
				m_soul.getCombo().start();
			}
			
		}
		else if(Multiple.input.justPressed('LEFT')) 
		{
			m_soul.getCombo().push(PlayerReaction.Left, { onStart:trace, onStartParams:['left'] } );
			m_soul.getCombo().start();
			//m_renderer.play('left_run', null,true)
			//trace(m_renderer.getDuration('left_run'));
			
		}
		else if (Multiple.input.justPressed('RIGHT')) 
		{
			m_soul.getCombo().push(PlayerReaction.Right, { onStart:trace, onStartParams:['right'] });
			m_soul.getCombo().start();
			//m_renderer.play('right_run', null);
			//trace(m_renderer.getDuration('right_run'));
		}

		if (Multiple.input.justPressed('UP')) 
		{
			m_soul.getCombo().push(PlayerReaction.Jump,{onStart:trace,onStartParams:['jump']});
			m_soul.getCombo().start();
		}

		if (Multiple.input.justPressed('Q'))
		{
			m_renderer.section = this.nextSection;
		}
		
		if (Multiple.input.justPressed('F')) {
			t = BetweenAS3.to(m_renderer, { alpha:1 }, 0.2);
			t.play();
		};
		
		if (Multiple.input.justPressed('G'))
		{
			t = BetweenAS3.to(m_renderer, { rotation:-720 }, 1)
			t.play();
		};
		
		if (Multiple.input.justPressed('H'))
		{
			t = BetweenAS3.to(m_rendererT, { rotation:720 }, 1)
			t.play();
		};
		
		if (Multiple.input.justPressed('B')) {
			var t:IObjectTween, t2:IObjectTween;
			var tg:ITweenGroup;
			
			t = BetweenAS3.to(m_renderer, { alpha:0 }, 0.2);
			t2 = BetweenAS3.to(m_renderer, { alpha:1 }, 0.2);
			tg = BetweenAS3.serial(t, t2);
			tg.stopOnComplete = false;
			tg.play();
		};

		if (Multiple.input.justPressed('K')) {
			m_rendererT.scaleMax = 3;
			t = BetweenAS3.to(m_rendererT, { scaleX:3,scaleY:3 }, 1)
			t2 = BetweenAS3.to(m_rendererT, { scaleX:1,scaleY:1 }, 1);
			tg = BetweenAS3.serial(t, t2);
			tg.stopOnComplete = false;
			tg.play();
		};
		
		if (Multiple.input.justPressed('N')) {
			m_renderer.scaleMax = 3;
			TweenLite.to(m_renderer, 1, { scaleY:3 } );
			//BetweenAS3.to(m_renderer, { scaleX:3 }, 1).play();
			//BetweenAS3.to(m_renderer, { scaleY:3 }, 1).play();
		};

		if (Multiple.input.justPressed('I')) {
			m_entity.interactive = !m_entity.interactive;
		};

		if (Multiple.input.justPressed('D')) {
			var index:int = (m_bulletList.length * Math.random()) >> 0;
			//m_soul.destroyAllEntity()
			Entity(m_bulletList[index]).kill();
			m_bulletList.splice(index,1);
			DesU.gc();
		};
	}

	
	
	private var _sections:Array = ['colonist_32_32','gunner_40_32'];
	private var _curr:int;
	
	public function get nextSection():String
	{
		var len:int = _sections.length;
		_curr =++_curr >= len?0:_curr;
		return _sections[_curr];
	}
		
	override public function exit():void
	{
		platformMapSheet.dispose();
		platformMapSheet = null;
		m_entity = null;
		m_renderer = null;
	}
	public static var renderData:Array = [[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
										[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
										[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
										[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
										[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
										[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
										[-1,-1,-1,-1,-1,-1,-1,-1,77,78,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
										[-1,-1,-1,-1,-1,-1,-1,-1,93,94,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
										[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,29,29,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
										[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,29,29,29,29,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
										[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,29,29,29,29,29,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
										[-1,-1,-1,-1,-1,-1,-1,59,59,-1,-1,-1,-1,29,29,29,29,29,29,29,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
										[-1,-1,-1,-1,-1,-1,59,59,59,-1,-1,-1,29,29,29,29,29,29,29,29,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
										[44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44],
										[36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36]]
}

}